function getSiteCfg() {
    $.getJSON(
        "/api/ocie/config_public/",
        function(json){
            var val = 'POC: <a class="POCemail" href="mailto:' +
                      json.ocie_poc_email + '">' + json.ocie_poc_name +
                      '</a> ' + 'Phone: (' +
                      json.ocie_poc_phone.substr(0,3) + ') ' +
                      json.ocie_poc_phone.substr(3,3) + '-' +
                      json.ocie_poc_phone.substr(6,4);
            $("span.POCemail").append(val);
        }
    );
    $.ajax({
        type: "GET",
        url: "/api/ocie/role_check/",
        success: function(string){
            $("a.logout:contains(Options)").css("display","block");
        },
        error: function(string){
            window.location = "/ocie/";
        }
    });
}


function getEmailInfo() {
    var ret = undefined;
    $.ajax({
        type: "GET",
        url: "/api/ocie/config/email/",
        dataType: "json",
	async: false,
        success: function(json){
            ret = json;
        }
    });
    return ret;
}


var postApptConf = function() {
    $("#button_save_appt_conf").parents("p").next()
        .children("*.waitMessage").show();
    var data = {};
    data['keyword'] = 'ocie_appt_conf';
    data['subject'] =
        $(":input[name=ocie_appt_conf_subject_line]").val();
    data['markup'] =
        $(":input[name=ocie_appt_conf_text]").val();
    var cb_success = function() {
	    showApptConf();
	}
    var cb_error = function() {
            $("#button_save_appt_conf").parents("p").next()
                .children("*.waitMessage").hide();
            $("#button_save_appt_conf").parents("p").next()
                .children("*.generalErrorMessage").show();
	    bindButtons();
	}
    return formSubmit(data, cb_success, cb_error);
}


var postApptRem = function() {
    $("#button_save_appt_rem").parents("p").next()
        .children("*.waitMessage").show();
    var data = {};
    data['keyword'] = 'ocie_appt_rem';
    data['subject'] =
        $(":input[name=ocie_appt_rem_subject_line]").val();
    data['markup'] =
        $(":input[name=ocie_appt_rem_text]").val();
    var cb_success = function() {
	    showApptRem();
	}
    var cb_error = function() {
            $("#button_save_appt_rem").parents("p").next()
                .children("*.waitMessage").hide();
            $("#button_save_appt_rem").parents("p").next()
                .children("*.generalErrorMessage").show();
	    bindButtons();
	}
    return formSubmit(data, cb_success, cb_error);
}


var postNotCanc = function() {
    $("#button_save_not_canc").parents("p").next()
        .children("*.waitMessage").show();
    var data = {};
    data['keyword'] = 'ocie_not_canc';
    data['subject'] =
        $(":input[name=ocie_not_canc_subject_line]").val();
    data['markup'] =
        $(":input[name=ocie_not_canc_text]").val();
    var cb_success = function() {
	    showNotCanc();
	}
    var cb_error = function() {
            $("#button_save_not_canc").parents("p").next()
                .children("*.waitMessage").hide();
            $("#button_save_not_canc").parents("p").next()
                .children("*.generalErrorMessage").show();
	    bindButtons();
	}
    return formSubmit(data, cb_success, cb_error);
}


function formSubmit(data, cb_success, cb_error) {
    $.ajax({
        type: "POST",
        url: "/api/ocie/config/email/",
        data: data,
        success: cb_success,
        error: cb_error
    });
}


function buildContainers() {
    $("div.mainContent table tbody:nth-child(1) tr:nth-child(2) td")
        .append( proto_html['appt_conf'] );
    $("div.mainContent table tbody:nth-child(2) tr:nth-child(2) td")
        .append( proto_html['appt_rem'] );
    $("div.mainContent table tbody:nth-child(3) tr:nth-child(2) td")
        .append( proto_html['not_canc'] );
    showApptConf();
    showApptRem();
    showNotCanc();
    $("div.mainContent a.headerToggle").click( function(){
        toggleSection( this );
        return false;
    });
}


function showApptConf() {
    var json = getEmailInfo();
    $("div.mainContent table tbody:nth-child(1) fieldset:nth-child(1) p")
        .remove();
    $("div.mainContent table tbody:nth-child(1) fieldset:nth-child(1) span a")
        .removeClass('buttonInactive');
    $("div.mainContent table tbody:nth-child(1) fieldset:eq(0)")
        .append( proto_html['appt_conf_show'] );
    $("div.mainContent table tbody:nth-child(1) fieldset:eq(0) p:eq(0) span")
        .html(json.ocie_appt_conf_subject_line);
    $("div.mainContent table tbody:nth-child(1) fieldset:eq(0) p:eq(1) span")
        .html(json.ocie_appt_conf_text);
    bindButtons();
}


function showApptRem() {
    var json = getEmailInfo();
    $("div.mainContent table tbody:nth-child(2) fieldset:nth-child(1) p")
        .remove();
    $("div.mainContent table tbody:nth-child(2) fieldset:nth-child(1) span a")
        .removeClass('buttonInactive');
    $("div.mainContent table tbody:nth-child(2) fieldset:eq(0)")
        .append( proto_html['appt_rem_show'] );
    $("div.mainContent table tbody:nth-child(2) fieldset:eq(0) p:eq(0) span")
        .html(json.ocie_appt_rem_subject_line);
    $("div.mainContent table tbody:nth-child(2) fieldset:eq(0) p:eq(1) span")
        .html(json.ocie_appt_rem_text);
    bindButtons();
}


function showNotCanc() {
    var json = getEmailInfo();
    $("div.mainContent table tbody:nth-child(3) fieldset:nth-child(1) p")
        .remove();
    $("div.mainContent table tbody:nth-child(3) fieldset:nth-child(1) span a")
        .removeClass('buttonInactive');
    $("div.mainContent table tbody:nth-child(3) fieldset:eq(0)")
        .append( proto_html['not_canc_show'] );
    $("div.mainContent table tbody:nth-child(3) fieldset:eq(0) p:eq(0) span")
        .html(json.ocie_not_canc_subject_line);
    $("div.mainContent table tbody:nth-child(3) fieldset:eq(0) p:eq(1) span")
        .html(json.ocie_not_canc_text);
    bindButtons();
}


function editApptConf() {
    var json = getEmailInfo();
    $("div.mainContent table tbody:nth-child(1) fieldset:nth-child(1) p")
        .remove();
    $("div.mainContent table tbody:nth-child(1) fieldset:eq(0)")
        .append( proto_html['appt_conf_edit'] );
    $("div.mainContent :input[name=ocie_appt_conf_subject_line]")
        .val(json.ocie_appt_conf_subject_line);
    $("div.mainContent :input[name=ocie_appt_conf_text]")
        .val(json.ocie_appt_conf_text);
    bindButtons();
}


function editApptRem() {
    var json = getEmailInfo();
    $("div.mainContent table tbody:nth-child(2) fieldset:nth-child(1) p")
        .remove();
    $("div.mainContent table tbody:nth-child(2) fieldset:eq(0)")
        .append( proto_html['appt_rem_edit'] );
    $("div.mainContent :input[name=ocie_appt_rem_subject_line]")
        .val(json.ocie_appt_rem_subject_line);
    $("div.mainContent :input[name=ocie_appt_rem_text]")
        .val(json.ocie_appt_rem_text);
    bindButtons();
}


function editNotCanc() {
    var json = getEmailInfo();
    $("div.mainContent table tbody:nth-child(3) fieldset:nth-child(1) p")
        .remove();
    $("div.mainContent table tbody:nth-child(3) fieldset:eq(0)")
        .append( proto_html['not_canc_edit'] );
    $("div.mainContent :input[name=ocie_not_canc_subject_line]")
        .val(json.ocie_not_canc_subject_line);
    $("div.mainContent :input[name=ocie_not_canc_text]")
        .val(json.ocie_not_canc_text);
    bindButtons();
}


function toggleSection(a) {
    var test =
        $(a).children("img:first[src$='collapse.gif']").length;
    var src = $(a).children("img:first").attr("src");
    src = ( test ) 
        ? src.replace(/collapse.gif/i,"expand.gif")
	: src.replace(/expand.gif/i,"collapse.gif");
    $(a).children("img:first").attr("src", src);
    if ( test ){
        $(a).parents("tr").next().hide();
        $(a).parents("td").removeClass('tableActiveColor');
    }else{
        $(a).parents("tr").next().show();
        $(a).parents("td").addClass('tableActiveColor');
    }
}


function bindButtons() {
    $("div.mainContent a.button").unbind();
    $("#button_edit_appt_conf:not(.buttonInactive)").click( function(){
        $(this).addClass('buttonInactive');
        editApptConf();
        return false;
    });
    $("#button_edit_appt_rem:not(.buttonInactive)").click( function(){
        $(this).addClass('buttonInactive');
        editApptRem();
        return false;
    });
    $("#button_edit_not_canc:not(.buttonInactive)").click( function(){
        $(this).addClass('buttonInactive');
        editNotCanc();
        return false;
    });
    $("#button_save_appt_conf:not(.buttonInactive)").click( function(){
        $(this).unbind();
        $(this).siblings().unbind();
        $(this).parents("p").next()
            .children("*.waitMessage, *.generalErrorMessage").hide();
        postApptConf();
        return false;
    });
    $("#button_save_appt_rem:not(.buttonInactive)").click( function(){
        $(this).unbind();
        $(this).siblings().unbind();
        $(this).parents("p").next()
            .children("*.waitMessage, *.generalErrorMessage").hide();
        postApptRem();
        return false;
    });
    $("#button_save_not_canc:not(.buttonInactive)").click( function(){
        $(this).unbind();
        $(this).siblings().unbind();
        $(this).parents("p").next()
            .children("*.waitMessage, *.generalErrorMessage").hide();
        postNotCanc();
        return false;
    });
    $("#button_cancel_appt_conf:not(.buttonInactive)").click( function(){
        $(this).unbind();
        showApptConf();
        return false;
    });
    $("#button_cancel_appt_rem:not(.buttonInactive)").click( function(){
        $(this).unbind();
        showApptRem();
        return false;
    });
    $("#button_cancel_not_canc:not(.buttonInactive)").click( function(){
        $(this).unbind();
        showNotCanc();
        return false;
    });
    $("a.buttonInactive").click( function(){
        return false;
    });
}


function setProtoHTML() {
    var proto_pre = {
        'appt_conf':'protoApptConfHTML',
        'appt_conf_show':'protoShowApptConfHTML',
        'appt_conf_edit':'protoEditApptConfHTML',
        'appt_rem':'protoApptRemHTML',
	'appt_rem_show':'protoShowApptRemHTML',
        'appt_rem_edit':'protoEditApptRemHTML',
        'not_canc':'protoNotCancHTML',
        'not_canc_show':'protoShowNotCancHTML',
        'not_canc_edit':'protoEditNotCancHTML'
    };
    proto_html = {};
    jQuery.each(proto_pre, function(i, val) {
        proto_html[i] = $("#" + val).html();
        $("#" + val).remove();
    });
}


jQuery(function($) {
    getSiteCfg();
    setProtoHTML();
    buildContainers();
});